Antes de nada quiero decirte que en el codigo anterior hay un fallo (tuve un lapsus), es igual pero sin la linea de antes de la de poner el color. Seria asi:
Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)
Select Case Chr(KeyAscii)
Case "<", ">", """"
Me.RichTextBox1.SelColor = &HC0&
Case Else
Me.RichTextBox1.SelColor = &H0&
End Select
End Sub
Y respecto a tu duda, eso es mas complicado, ya que lo que debes hacer es buscar tus caracteres dentro del texto, bien uno a uno y comparandolo con cada uno de tus caracteres, o bien mediante la funcion InStr (claro que tendrias que ejecutarla para cada uno de tus caracteres que quieras encontrar). Y esto cada vez que alguien peque un texto. Lo de pegar un texto creo que el control no tiene nada que te lo diga, pero si puedes comprobarlo mediante una variable a nivel de modulo o formulario, y utilizandola en el evento Change del control.
Por ejemplo. Al final de todo el evento Change pones vTextoManual = False, cuya variable es de tipo Boolean y te indica si el texto ha sido pegado o escrito manual. Y en el evento KeyDown pones vTextoManual = True, asi sabes que el texto lo han escrito manualmente. Y en el evento Change compruebas si el texto ha sido pegado, en caso afirmativo, empiezas a buscar tus caracteres. Yo creo que es la solucion mas practica, pero vamos, tampoco es que sea un lumbreras del Visual Basic. Asi que, si no te sirve, pues lo siento mucho.
Te pongo un ejemplo metodologico.
Dim vTextoManual As Boolean
Private Sub RichTextBox1_Change()
If vTextoManual = False Then
...
...
ComprobarCaracteresParaCambiarlesElColor
...
...
End If
vTextoManual = False
End Sub
Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
vTextoManual = True
End Sub